IICS CDI Amazon Redshift V2 ConnectorでRedshift Serverlessと接続できるか試してみた

IICS CDI Amazon Redshift V2 ConnectorでRedshift Serverlessと接続できるか試してみた

Clock Icon2022.12.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

データアナリティクス事業本部ビッグデータチームのyosh-kです。
今回はIICS CDI Amazon Redshift V2 ConnectorでRedshift Serverlessと接続できるか試してみたいと思います。 結論としてはRedshiftと同様に接続可能でした。

作業としては以下の流れになります。

  • 事前準備
  • Redshift Serverless構築
  • S3 Bucket作成
  • IAM周りの設定
  • Amazon Redshift V2 Connector設定
  • S3 Connector設定
  • Mapping作成
  • 実行結果

事前準備

構成図

構成図としては以下になります。

IICS CDIのMappingのSourceにRedshift Serverlessの特定のtableを設定し、TargetはS3とします。

前提条件

前提条件として、IICS Cloud、IICS Secure Agent、VPCは事前に設定済みのものとします。
まだの方はこちらも参考にしてみてください。
Informatica Cloud Data Integrationの環境をAWS上で構築してみた

Redshift Serverless構築

AWSが提供している公式のハンズオンがありますので、そちらに沿ってstep2まで実施していただければと思います。
Amazon Redshift Serverless データ分析セルフハンズオン

次に管理者パスワードを設定します。名前空間の設定画面から「管理者パスワードを変更」をクリックします。

新たな管理者ユーザーとパスワードを設定します。

次にRedshift ServerlessのSecurity Groupを作成します。VPCのセキュリティグループの作成画面から新規のセキュリティグループを作成します。インバウンドルールのタイプにRedshiftを選択し、ソースにはSecure Agentが起動しているEC2インスタンスにアタッチされているセキュリティグループを設定します。アウトバウンドルールはデフォルト設定のままになります。

次にRedshift Serverlessのセキュリティ設定を行います。再びRedshift Serverlessの画面から作成したワークグループを選択します。その中の「ネットワークとセキュリティ」タブから編集ボタンをクリックします。

VPCはSecure Agentと同じVPCを設定し、セキュリティグループは先ほど作成したセキュリティグループを設定します。サブネットはpublicサブネットを3つ選択し変更を保存します。

次にテスト用のtableを準備します。先ほどのハンズオンでUnload頂いたデータ件数が大量ですので、クエリエディタ画面からデータ件数が少ないflight_date「2010-06-06」以外を削除するSQLを実行します。
delete from "dev"."public"."flightdata" where flight_date != '2010-06-06';

S3 Bucket作成

次にStaging用かつTarget用のBucketを作成します。Staging用とは、Amazon Redshift V2 ConnectorでRedshiftからデータを取得する際に、一時的に使用するBucketのことです。RedshiftからUnloadしたデータをStagingファイルとして格納します。Stagingされたファイルを元にTarget先へ格納します。処理が終了するとStagingファイルを削除します。今回は、Staging用とTarget用に両方同じBucketを指定します。
Secure Agent and Amazon Redshift integration
Amazon Redshift staging directory for Amazon Redshift V2 targets

S3の画面に遷移し、IICS Secure Agentが設置されているEC2と同一リージョンにS3を作成します。設定はデフォルトのままでOKです。

作成したBucket内に、Targetの格納先となるフォルダを作成します。

IAM周りの設定

インラインポリシーの作成とアタッチ

先ほど作成したS3 BucketへIICS CDIからINSERTできるように、IICS Secure AgentのEC2インスタンスに許可ポリシーを設定します。IICS Secure AgentのEC2インスタンスに付与されているIAM ロールの設定画面から「インラインポリシーを作成」をクリックします。

サービスに「S3」を選択。「アクション」は細かく制限することも可能ですが、今回は「全てのS3アクション」を指定します。

「リソース」は指定を選択し、bucket箇所の「ARNの追加」を選択します。

Bucket nameには先ほど作成したS3 Bucketを指定し、「追加」をクリックします。

もう一度「ARNの追加」から先ほどのBucket配下を「*」で指定し、「追加」をクリックします。

ポリシーの確認で任意の名前を入力してポリシーの作成は終了です。作成されるとポリシーがIAMロールにアタッチされていることを確認できます。

Redshift Connector用のIAMユーザー、ポリシーの作成

Redshift ConnectorではIAMユーザー情報を用いてStaging用のS3 Bucketへアクセスすることになるため、IAMユーザーを作成します。

IAMユーザー設定画面から「ユーザーを追加」をクリックします。

任意の名前を入力し、「アクセスキー-プログラムによるアクセス」を選択し、次にいきます。

「既存のポリシーを直接アタッチ」を選択し、「ポリシーの作成」からポリシーを作成します。ポリシーの設定条件は、インラインポリシーと同様であるため省略します。

作成したポリシーを選択し、その他の設定はデフォルトのままでIAMユーザーを作成します。

IAMユーザーの作成に成功しましたらCSVをダウンロードし、アクセスキーIDとシークレットアクセスキーを保管してください。

Amazon Redshift V2 Connector設定

IICSにログインした状態で、管理者サービスの接続画面で「新しい接続」をクリックします。

それぞれ以下の値を入力します。

  • 接続名: 任意のConnector名
  • タイプ: Amazon Redshift V2
  • ランタイム環境: Secure Agent
  • Username: Redshift Serverlessで設定した管理者ユーザー
  • Password: Redshift Serverlessで設定した管理者パスワード
  • Access Key ID: 作成したIAMユーザーのアクセスキーID
  • Secret Access Key: 作成したIAMユーザーのシークレットアクセスキー
  • JDBC URL: Amazon Redshift サーバーレスの作成したワークグループのJDBC URL
  • Cluster Region: Amazon Redshift サーバーレスを作成したRegion

接続テストの結果、成功するか確認します。

S3 Connector設定

Redshift Connectorと同様にS3 Connectorも設定します。

  • 接続名: 任意のConnector名
  • タイプ: Amazon S3 V2
  • ランタイム環境: Secure Agent
  • Folder Path: 接続先のBucket名
  • RegionName: BucketのRegion

接続テストの結果、成功するか確認します。

Mapping作成

IICS CDIで新規でMappingを作成します。「ソースの接続」には先ほど作成したRedshift Connectorを選択し、「オブジェクト」にはテスト用のtableを指定します。Staging用の「S3 Bucket Name」は作成したBucket名を指定します。

「Targetの接続」には先ほど作成したS3 Connectorを選択し、「オブジェクトのパス」には先ほど作成したパスを、「ファイル名」には任意の名前を入力します。

Mappingが有効であることを確認し、実行します。

実行結果

ジョブの成功を確認!

S3にも問題なく格納されていました!

最後に

特に問題なく、Redshift Serverlessでも接続できることを確認できて良かったです。IICSとRedshiftとの接続は、何かと設定が複雑でしたので少しでもこのブログがお役に立てればと思います。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.